const recorderManager = wx.getRecorderManager()
import chatService from "../../apis/chat.js";

Component({

  /**
   * 组件的属性列表
   */
  properties: {
    npcShow:Boolean
  },

  /**
   * 组件的初始数据
   */
  data: {
    isRecording:false,
    inputVal:'',
    isCancel:false, //是否取消发送
    startPoint:null,
    waveInfo:{
      num:20,
      width: '2rpx',
      height: '4rpx',
      backgroundColor: '#8299FF',
      marginRight: '3rpx',
    }
  },

  /**
   * 组件的方法列表
   */
  methods: {
    onInputConfirm(event){
      //点击完成按钮时触发，
      console.log('点击完成按钮时触发，',event.detail )
      this.triggerEvent('sendMsg',event.detail.value)
      this.setData({
        inputVal:''
      })
    },
    onRecordStart(e){
      //开始录音
      this.setData({
        isRecording:true,
        isCancel:false,
        startPoint:e.touches[0]
      })

      recorderManager.start({
        duration:60000,
        sampleRate:16000,
        numberOfChannels:1,
        format:'wav'
      })

      recorderManager.onStart(res=>{
        console.log('recorderManager  start==============',res)
      })

      recorderManager.onError((res) => {
        console.log('recorderManager  start  error==============',res)
       })
    },
    onTouchMove(e){
      //手指移动，当滑动距离大于25时 取消发送语音
      console.log('onTouchMove==========',e.touches[0].clientY , this.data.startPoint.clientY)
      if(this.data.startPoint.clientY - e.touches[0].clientY>10){
        this.setData({
          isCancel:true //设置为不发送语音
        })
      }else{
        this.setData({
          isCancel:false //设置发送语音
        })
      }
    },
    onTouchEnd(e){
      //手指松开 结束录音
      this.setData({
        isRecording:false
      })

       //结束录音
       recorderManager.stop()
      let that = this
       recorderManager.onStop(res=>{
         console.log('结束录音==========',res)
         if(that.data.isCancel) return //取消发送
         if(res.duration<1000){
           wx.showToast({
             title: '录音时间太短，请长按录音',
             icon:'none',
             duration:1000
           })
         }else{
           //进行语音发送
           const fs = wx.getFileSystemManager()
           // 同步接口
           try {
             const base64 = fs.readFileSync(res.tempFilePath, 'base64')
             chatService.voice_recognition({
               "media_format": "ogg", // 音频格式，默认wav，暂支持ogg/wav
               "base64_voice_data": base64 // 录音base64编码数据
               // "base64_voice_data": 'data:audio/x-wav;base64,'+base64 // 录音base64编码数据
             }).then(rec_res=>{
               console.log('rec_res===========',rec_res)
               this.triggerEvent('sendMsg',rec_res.data.text)
             }).catch(err=>{
               console.log('catch===========',err)
             })
           } catch(e) {
             console.error(e)
           }
         }
       })
    }
  }
})